package com.tank.net;

import com.tank.net.msg.Msg;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;

/**
 * 自定义协议：类型+字节长度+数据。消息头（消息类型+数据长度+加解密）+消息体+校验码（根据消息体算出校验码）
 * @author CaoBaoYin
 * @since 21/11/1 17:27
 */
public class TankMsgEncoder extends MessageToByteEncoder<Msg> {
    @Override
    protected void encode(ChannelHandlerContext ctx, Msg msg, ByteBuf out) throws Exception {
        /* 自定义协议：消息类型+消息长度+消息体+校验码（暂时不加） */
        // System.out.println("编码消息：" + msg);
        out.writeInt(msg.getMsgType().ordinal());
        byte[] bytes = msg.toBytes();
        out.writeInt(bytes.length);
        out.writeBytes(bytes);
    }
}
